POV-Ray : Newsgroups : povray.bugreports : List of bugs : List of bugs Server Time
28 Sep 2024 11:04:06 EDT (-0400)
  List of bugs  
From: Nathan Kopp
Date: 1 Dec 1998 14:54:48
Message: <3664484F.161EE94C@Kopp.com>
In case the POV team hates sifting through all of those RTFMs to
find the real bugs, I've consolidated the bugs that I feel are
'real' here, along with pointers to any fixes that have been
suggested by people in this group.  I also have a few new (and
not yet well tested) fixes to some old bugs here.

I have tested all of these bug fixes and they have fixed the
problem.  Of course, side effects have not yet been thoroughly
investigated.

-Nathan Kopp

P.S.  If the POV-Team has fixed these or plans to, I aggree with
Nieminen that we'd appreciate some feedback.  ;)


=========================
double sided illumination
=========================
  thread: "simple incorrect shading of bicubic patch example"
  bug: Bicubic patches and smooth triangles are double-illuminated
       by default (and this cannot be turned off).  Not really a
       'bug', but it is not consistent.
  fix: new "double_illuminate" keyword
       see http://nathan.kopp.com/patched.htm - not well tested

=========================
image map interpolation
=========================
  thread: "interpolate wraparound & once"
  bug: Interpolation assumes wrap-around even when the once keyword
       is used.
  fix: not done yet.. shouldn't be too hard

=============================
symbol table & infinite macro
=============================
  thread: "POV 3.1 Infinite Recursion Bug-Fix"
  bug: When the maximum number of symbol tables is reached, POV
       calls Destroy_Table with an incorrect index, causing a
       crash
  fix: See the thread. Nigel Stewart provides a good fix.

=========================
Prism bug
=========================
  thread: "Potential render bug in POV"
  bug: Ghost line appears sometimes when rendering a prism.  The
       cause has not been determined.  Note, the example given
       is not very good, but all objects except the prism can be
       removed from the scene and the bug remains.
  fix: unknown

========================================
Renderer lockup (affects Win95 at least)
========================================
  thread: "Bug: divide by zero in scene file causes renderer to hang"
  bug: The line "rotate <0,0,360/clock>" supposedly causes the renderer
       to lock up.  I have not tried to confirm this bug.
  fix: unknown

=========================
Another prism bug
=========================
  thread: "prism, linear spline, conic sweep bug"
  bug: Incorrect rendering of a conic sweep prism
  fix: See the thread. Darius Davis provides a fix.

=========================================
Large EPSILON value in Windows CONFIG.INI
=========================================
  thread: -
  bug: CONFIG.INI in DOS and Windows sets EPSILON to 10e-5, which
       causes all sorts of problems when rendering very small or very
       large objects.
  fix: Change EPSILON to something smaller, like 10e-12

=========================
4d vector bug
=========================
  thread: "Can't define 4d vectors"
  bug: 4D & 5D vectors can't be defined as the documentation says
       they can be.
  fix: Change the documentation.  Only 3d vectors can be defined.
       4D and 5D COLORS can be defined, but not vectors.

=========================
2d vector bug
=========================
  thread: "2-d vector components (uv) bug"
  bug: When 2d vectors are defined, the number of components is not
       set properly in EXPRESS.C, so the components cannot be accessed
       using the dot operators (e.g.  a.x works but a.y does not)
  fix: This requires two changes, both in EXPRESS.C:
       1)  In Parse_Num_Factor(), around line 624, add the line
           shown below (with surrounding lines included):
     ---------------
     CASE (LEFT_ANGLE_TOKEN)
       *Terms=2; /* NK 1998 - added this line (suggested by Thomas Willhalm)*/
       Express[X] = Parse_Float();   Parse_Comma();
       Express[Y] = Parse_Float();   Parse_Comma();
     ---------------

       2)  In Parse_Vector_Float(), right before the line
             "Have_Vector=(Terms==3);", add:
   ---------------
   /* NK 1998 - promote all 2-component vectors to 3-component vectors...
                this fixes various 2-component vector bugs */
   if (Terms==2)
     Terms++;
   /* NK ---- */
   ---------------

=========================
normal average bug
=========================
  thread: "Is the average normal bug fixed yet?"
  bug: Error with average normals (and other normals, too), caused
       by flipping the surface normal after perturbing it.
  fix: This is fixed by the changes made to "compute_lighted_texture()"
       made when fixing the reflection bug.
       It basically consists of moving the code that flips the
       direction of the RawNormal to the very top of the function so
       that it always executes.  The normal-flipping code in the
       normal-perturbing loop then must be removed.

=========================
Reflection bug
=========================
  thread: "Reflection Bug?"
  bug: You can see through reflective surfaces when perturbed normals
       are used.  For an explanation, see the thread.
  fix: See the thread.  I (Nathan) provide a fix which also fixes the
       normal average bug.

=========================
#local 'bug'
=========================
  thread: "#local 'bug' cripples usefulness"
  bug: Actually, it's a limitation.  Basically, when you have a local
       variable, it must be of the same type as the non-local variable
       if a variable of that name already exists.  The title of the
       thread says it all.  I'm going to put a personal gripe here:
       I really hate the error "Attempted to redefine float identifier
       as vector".  I should be able to redefine anything as anything
       else whenever I want to (with a warning, of course).
  fix: I've got an educated guess here:
       Change Test_Redefine() (in PARSE.C) to look like this:
--------
void Test_Redefine(TOKEN Previous, TOKEN *NumberPtr, void *Data)
{
  char *oldt, *newt;

  if ((Previous == IDENTIFIER_TOKEN) || (Previous == EMPTY_ARRAY_TOKEN))
  {
    return;
  }
  
  Destroy_Ident_Data(Data,Previous);
}
----------
        Note:  This gets rid of ALL redefine errors, not just ones
        associated with local variables.

        Warning:  This may have some problems, but I just tried
        it and it seemed to work.  First, I could easily re-define
        a float as a vector or even a texture as a float.  The I put
        it to a great test:  I made a macro that used a local variable
        that had the same name as a normal in my scene (and declared
        it to be a vector).  Then I called the macro between the
        normal's declaration and it's use.  In the official POV, it
        failed.  In my compile, everything worked.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.